package com.neuedu.corejava.ch4;

public class Array2 {

	public static void main(String[] args) {

		// 班级座位，电影院的座位
		// 设计一个二维数组，保存班级同学的座位信息
		// 二维数组的定义：
		// String sits[][] = new String[][];--错误，必须指定行
		String sits[][] = new String[10][];
		// 锯齿数组：java没有严格意义的二维数组，而是指代 数组的数组：
		// 二维数组的第二维度可以是不相等，理解为列数可以不相等；称为锯齿数组。
		sits[0] = new String[6];// 第一行有6列
		sits[1] = new String[3];// 第二行有3列
		sits[2] = new String[9];// 第三行有9列

		sits[0][0] = "陆1";
		sits[0][1] = "陆2";
		sits[0][2] = "陆3";
		sits[0][3] = "陆4";
		sits[0][4] = "陆5";
		sits[0][5] = "陆6";

		sits[1][0] = "陆7";
		sits[1][1] = "陆8";
		sits[1][2] = "陆9";

		// 二维数组的遍历
		System.out.println(sits.length);// 使用数组名.length获取的数组长度是第一维度的长度，二维数组的第一维度长度是相同的

		// 使用二重循环 遍历二维数组
		for (int r = 0; r < sits.length; r++) { // 先遍历出第一维度，行

			if (sits[r] != null) {

				for (int c = 0; c < sits[r].length; c++) {// 再遍历出每一列的数据，注意每一行的列数可能不一样
					System.out.print(sits[r][c] + "\t");
				}
			}else{
				System.out.println("第"+(r+1)+" 行没有数据");

			}
		}
		
		
		//二维数组的其它定义方法：
		String[] sits2[]=new String[10][6];
		String[][] sits3=new String[10][6];
		//String sits4[][]=new String[][];错误，必须指定行数（第一维度）
		String sits4[][]=new String[10][6];
		//String sits4=new String[10][6];

		//String sits5[]=new String[10][]{{""},{""},{""}};直接赋值时，不能指定行数和列数
		String[] sits5[]=new String[][]{{""},{""},{""},{"","","","","","",},{"","",""}};
		String[] sits6[]={{""},{""},{""},{"","","","","","",},{"","",""}};
		
		//使用for each循环遍历二维数组
		for(String[] row:sits){
			if(row!=null){
				for(String name:row){
					System.out.print(name+"\t");
				}
				System.out.println();
			}else {
				System.out.println("该行数据为null");
			}
		}
	}

}
